﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CS322_V9.primeri
{
    public class Control
    {
        // ovi članovi su zaštićeni i samim tim vidljivi i metodama izvedene klase 
        protected int top;
        protected int left;

        // konstruktoru se prosleđuju dva parametra za određivanje pozicije
        public Control(int top, int left)
        {
            this.top = top;
            this.left = left;
        }

        // simulira iscrtavanje prozora
        public virtual void DrawWindow()
        {
            Console.WriteLine("Control: drawing Control at {0}, {1}",
               top, left);
        }
    }

    // ListBox se izvodi iz klase Control
    public class ListBox : Control
    {
        private string listBoxContents;  // novi član

        // konstruktoru se dodaje parametar
        public ListBox(
           int top,
           int left,
           string contents) :
            base(top, left)  // poziv osnovnog konstruktora
        {

            listBoxContents = contents;
        }

        // redefinisana verzija jer menjamo ponašanje metode u osnovnoj klasi
        public override void DrawWindow()
        {
            base.DrawWindow();  // poziv osnovnog metoda
            Console.WriteLine("Writing string to the listbox: {0}",
               listBoxContents);
        }
    }

    public class Button : Control
    {
        public Button(
           int top,
           int left) :
            base(top, left)
        {
        }


        // redefinisana verzija jer menjamo ponašanje metode u osnovnoj klasi
        public override void DrawWindow()
        {
            Console.WriteLine("Drawing a button at {0}, {1}\n",
               top, left);
        }
    }




}
